// 2025/5/6
// 体操队形

#include <iostream>
#include <vector>
using namespace std;

bool in[11] = {false};
int ans = 0;

void dfs(vector<int>& a, int pos)
{
    int n = a.size() - 1;
    if(pos == n)
    {
        ans++;
        return;
    }

    for(int i = 1; i <= n; i++)
    {
        int pre = a[i];
        if((in[pre] || pre == i) && !in[i])
        {
            in[i] = true;
            dfs(a, pos + 1);
            in[i] = false;
        }
    }
}

int main() {
    int n; cin >> n;
    vector<int> a(n + 1, 0);
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }

    dfs(a, 1);
    cout << ans << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")